package com.ysj.senioradvanced


import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.work.Constraints
import androidx.work.OneTimeWorkRequest
import androidx.work.PeriodicWorkRequest
import androidx.work.WorkManager
import com.ysj.senioradvanced.Jetpack.Navigation.NavigationActivity
import com.ysj.senioradvanced.Jetpack.WorkManager.TestWorker
import kotlinx.android.synthetic.main.activity_main.*
import java.util.concurrent.TimeUnit
import kotlin.math.log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        /**
         * WorkManager
         */
        mWorkManager.setOnClickListener {
            //约束条件

            /**
             * setRequiredNetworkType 它将特定的网络类型设置成要完成的工作的要求，比如，我们想有网络的情况下执行某些任务，我们就可以使用CONNECTED作为约束条件，网络类型其它选项分别是METERED，NOT_ROAMING，UNMETERED。默认值为NOT_REQUIRED。
            setRequiresBatteryNotLow 如果为true，则设备在电量不低的情况下才可以执行任务
            setRequiresCharging 如果为true，则设备在充电的时候才允许执行任务
            setRequiresDeviceIdle 如果为true，则设备处于空闲状态下才可以执行任务
            setRequiresStorageNotLow 如果为true，则要在存储空间充足时候才可以执行任务

             */
            val constraints: Constraints = Constraints.Builder()
                //.setRequiresBatteryNotLow(true)//电池电量不低时执行工作
                .setRequiresCharging(true)
                .build()

            //单次任务
            val request: OneTimeWorkRequest =
                OneTimeWorkRequest.Builder(TestWorker::class.java)
                    .setConstraints(constraints)
                    .build()


            //每天定时任务
//            val request: PeriodicWorkRequest =
//                PeriodicWorkRequest.Builder(TestWorker::class.java, 1, TimeUnit.DAYS)
//                    .setConstraints(constraints)
//                    .build()


            val instance = WorkManager.getInstance(this)
            instance.enqueue(request)



            instance.getWorkInfoByIdLiveData(request.id).observe(this, Observer {
                Log.e("TAG", "onCreate: $it")
                //Toast.makeText(this,"充电器断开", Toast.LENGTH_SHORT).show()
            })

        }



        mNavigation.setOnClickListener {
            startActivity(Intent(this,NavigationActivity::class.java))
        }
    }
}